<!DOCTYPE html>
<html lang="zh">
	<head>
		<meta charset="UTF-8">
		<title>Sa-Token</title>
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
		<meta name="description" content="sa-token是一个java权限认证框架，功能全面，上手简单，登录验证、权限验证、Session会话、踢人下线、账号封禁、集成Redis、前后台分离、分布式会话、微服务网关鉴权、单点登录、OAuth2.0、临时Token验证、记住我模式、模拟他人账号、临时身份切换、多账号体系、注解式鉴权、路由拦截式鉴权、花式token、自动续签、同端互斥登录、会话治理、密码加密、jwt集成、Spring集成、WebFlux集成...，有了sa-token，你所有的权限认证问题，都不再是问题">
		<meta name="keywords" content="sa-token,sa-token框架,sa-token文档,java权限认证">
		<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
		<link rel="shortcut icon" type="image/x-icon" href="logo.png">
		<link rel="stylesheet" href="./lib/index.css">
		<link rel="stylesheet" href="https://unpkg.zhimg.com/docsify@4.11.3/lib/themes/vue.css">
		<script type="text/javascript" src="https://cdn.wwads.cn/js/makemoney.js" async></script>
	</head>
	<body>
		<a href="/">
			<div class="logo-box">
				<img src="logo.png" title="logo" />
				<h1 class="logo-text">Sa-Token</h1>
			</div>
		</a>
		<nav>
			<select onchange="location.href=this.value">
				<option value="http://sa-token.dev33.cn/doc/index.html">最新版</option>
				<option value="http://sa-token.dev33.cn/v/v1.25.0/doc/index.html">v1.25.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.24.0/doc/index.html">v1.24.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.23.0/doc/index.html">v1.23.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.22.0/doc/index.html">v1.22.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.21.0/doc/index.html">v1.21.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.20.0/doc/index.html">v1.20.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.19.0/doc/index.html">v1.19.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.18.0/doc/index.html">v1.18.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.17.0/doc/index.html">v1.17.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.16.0/doc/index.html">v1.16.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.15.0/doc/index.html">v1.15.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.14.0/doc/index.html">v1.14.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.13.0/doc/index.html">v1.13.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.12.1/doc/index.html">v1.12.1</option>
				<option value="http://sa-token.dev33.cn/v/v1.12.0/doc/index.html">v1.12.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.11.0/doc/index.html">v1.11.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.10.0/doc/index.html">v1.10.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.9.0/doc/index.html">v1.9.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.8.0/doc/index.html">v1.8.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.7.0/doc/index.html">v1.7.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.6.0/doc/index.html">v1.6.0</option>
				<option value="http://sa-token.dev33.cn/v/v1.5.1/doc/index.html">v1.5.1</option>
				<option value="http://sa-token.dev33.cn/v/v1.4.0/doc/index.html">v1.4.0</option>
			</select>
			<a href="../index.html">首页</a>
			<!-- <a href="index.html">文档</a> -->
			<a href="http://sa-app.dev33.cn/wall.html?name=sa-token" target="_blank">需求墙</a>
			<!-- <a href="#/more/tj-gzh">推荐公众号</a> -->
			<a href="#/more/link">生态</a>
			<a href="#/more/update-log">更新日志</a>
		</nav>
		<div class="main-box">
			<div id="app">加载中...</div>
		</div>
		<div style="position: fixed; right: 0; bottom: 0; z-index: 10000; border: 0px #aaa solid;">
			<div class="wwads-cn wwads-vertical" data-id="88" style="max-width:150px"></div>
		</div>
		
		<script>
			var saTokenTopVersion = '1.26.0';	// Sa-Token最新版本 
			var name = '<img style="width: 60px; height: 60px; vertical-align: middle;" src="logo.png" alt="logo" /> ';
			name += '<b style="font-size: 28px; vertical-align: middle;">Sa-Token</b> <sub>v' + saTokenTopVersion + '</sub>'
			window.$docsify = {
				name: name, // 名字 
				repo: 'https://github.com/dromara/sa-token', // github地址 
				// themeColor: '#06A3D7', // 主题颜色  
				basePath: location.pathname.substr(0, location.pathname.lastIndexOf('/') + 1), // 自动计算项目名字 
				// basePath: '/sa-token-doc/',		// 设置文件加载的父路径, 这在一些带项目名部署的文件中非常有效
				auto2top: true, // 是否在切换页面后回到顶部 
				// coverpage: true, // 开启封面 
				subMaxLevel: 4, // 标题解析层级, 写几就在目录树中解析到几级标题 ,一般写2吧也就 
				loadSidebar: true, // 加载自定义侧边栏 , 目录定制在: _sidebar.md 文件 (需要创建 .nojekyll 的空文件，阻止 GitHub Pages 忽略命名是下划线开头的文件)
				copyCode: { // 复制插件 
					buttonText: '复制到剪贴板',
					errorText: '错误',
					successText: '复制成功'
				},
				// sidebarDisplayLevel : 1 ,  // 设置侧边栏显示级别
				// search: 'auto', // 搜索功能 
				alias: {
					// '/sso/_sidebar.md': '/sso/_sidebar.md',
					'/.*/_sidebar.md': '/_sidebar.md'
				},
				// tab选项卡
				tabs: {
					persist    : true,      // 是否在刷新页面时重置选项卡
					sync       : true,      // 页面上的多个tab是否同步切换
					theme      : 'classic', // 主题：'classic', 'material', false
					tabComments: true,      // 用注释来标注选项卡标题，例如：<!-- tab:SpringBoot  -->
					tabHeadings: true       // 用标题+粗体来定制选项卡
				},
				plugins: [ // 自定义插件 
					function(hook, vm) {
						// 解析之前执行
						hook.beforeEach(function(content) {
							try{
								var reg = /\$\{sa.top.version\}/g;
								content = content.replace(reg, window.saTokenTopVersion);
							}catch(e){
								// 
							}
							return content;
						});
						// 每次路由切换时，解析内容之后执行 
						hook.afterEach(function(html) {
							var url = 'https://gitee.com/dromara/sa-token/tree/dev/sa-token-doc/doc/' + vm.route.file;
							var url2 = 'https://github.com/dromara/sa-token/tree/dev/sa-token-doc/doc/' + vm.route.file;
							var footer = [
								'<br/><br/><br/><br/><br/><br/><br/><hr/>',
								'<footer>',
								'<span>发现错误？ 您可以在 <a href="' + url + '" target="_blank">Gitee</a> 或 <a href="' + url2 +
								'" target="_blank">GitHub</a> 帮助我们完善此页文档！</span>',
								'或 <a href="https://jq.qq.com/?_wv=1027&k=45H977HM" target="_blank">加入QQ群</a> 交流反馈',
								'</footer>'
							].join('');
							return html + footer;
						});
						// 每次路由切换时数据全部加载完成后调用，没有参数。
						hook.doneEach(function() {
							// 添加代码行数样式
							$('pre code').each(function(){
								var lines = $(this).text().split('\n').length;
								var $numbering = $('<ul/>').addClass('code-line-box');
								$(this)
									.addClass('has-numbering')
									.parent()
									.append($numbering);
								for(i=1;i<=lines;i++){
									$numbering.append($('<li/>').text(i));
								}
							});
						});
						// 初始化并第一次加载完成数据后调用，没有参数。
						hook.ready(function() {
						});
					}
				],
			}
		</script>
		<script src="https://unpkg.zhimg.com/docsify@4.9.4/lib/docsify.min.js"></script>
		<script src="https://unpkg.zhimg.com/docsify-copy-code@2.1.0/dist/docsify-copy-code.min.js"></script>
		<script src="https://unpkg.zhimg.com/prismjs@1.20.0/components/prism-java.min.js"></script>
		<script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
		<script src="https://unpkg.zhimg.com/docsify-tabs@1.4.4"></script>
		<!-- img点击放大 -->
		<script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.min.js"></script>
		
		<!-- sidebar折叠 -->
		<!-- <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/sidebar.min.css" />
		<script src="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/docsify-sidebar-collapse.min.js"></script> -->

		<script src="https://unpkg.zhimg.com/jquery@3.4.1/dist/jquery.min.js"></script>

		<!-- 搜索引擎自动提交 -->
		<script>
			(function() {
				var bp = document.createElement('script');
				var curProtocol = window.location.protocol.split(':')[0];
				if (curProtocol === 'https') {
					bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
				} else {
					bp.src = 'http://push.zhanzhang.baidu.com/push.js';
				}
				var s = document.getElementsByTagName("script")[0];
				s.parentNode.insertBefore(bp, s);
			})();
		</script>
		
		<!-- 友盟 -->
		<div style="height: 0px; overflow: hidden;">
			<script type="text/javascript" src="https://s4.cnzz.com/z_stat.php?id=1279646043&web_id=1279646043"></script>
		</div>
		<!-- 百度统计 -->
		<script>
			var _hmt = _hmt || [];
			(function() {
				var hm = document.createElement("script");
				hm.src = "https://hm.baidu.com/hm.js?77d7418dd845f98ba1cfee8596eeee3f";
				var s = document.getElementsByTagName("script")[0]; 
				s.parentNode.insertBefore(hm, s);
			})();
		</script>


	</body>
</html>
